package ar.edu.utn.frgp.banco.service.impl;

import ar.edu.utn.frgp.banco.dao.PrestamoDao;
import ar.edu.utn.frgp.banco.dao.impl.PrestamoDaoImpl;
import ar.edu.utn.frgp.banco.domain.Prestamo;
import ar.edu.utn.frgp.banco.exceptions.DataAccessException;
import ar.edu.utn.frgp.banco.exceptions.PersonalisedException;
import ar.edu.utn.frgp.banco.exceptions.ServiceException;
import ar.edu.utn.frgp.banco.service.PrestamoService;
import ar.edu.utn.frgp.banco.utils.Logger;

public class PrestamoServiceImpl implements PrestamoService{

	private PrestamoDao prestamoDAO;
	
	public PrestamoServiceImpl(){
		
	}
	
	/**
	 * @throws ServiceException 
	 * @see ar.edu.utn.frgp.banco.service.PrestamoService#solicitarPrestamo(ar.edu.utn.frgp.banco.domain.Cliente, java.math.BigDecimal, int)
	 */
	@Override
	public Boolean solicitarPrestamo(Prestamo pres) throws ServiceException {
		prestamoDAO = new PrestamoDaoImpl();
		try{
			return prestamoDAO.crearPrestamo(pres.getDni(), pres.getFechaAlta(), 
					pres.getMonto(), pres.getCantidadCuotas(), pres.getInteres());
		} catch (DataAccessException e) {
			throw new ServiceException(e.getError(),e);
		}
	}

	@Override
	public Prestamo consultarPrestamo(String dni) throws ServiceException {
		// TODO Auto-generated method stub
		prestamoDAO = new PrestamoDaoImpl();
		
		Prestamo pre = null;
		
		
		 try {
			pre =prestamoDAO.obtenerPrestamo(dni);
		} catch (DataAccessException e) {
			Logger.error("Ocurrio un error al consultar el prestamo: "+this.getClass());
			throw new ServiceException("No se pudo obtener el prestamo.",e);
		}
		 
		return pre;
	}
	
	public Integer consultarCuotas(Long id) throws PersonalisedException{
		prestamoDAO = new PrestamoDaoImpl();
		
		return prestamoDAO.obtenerNumCuotas(id);
	}
	
	public Boolean esActivo(String dni) throws DataAccessException{
		prestamoDAO = new PrestamoDaoImpl();
		
		return prestamoDAO.estaActivo(dni);
	}
}
